package com.ssy.lingxi.common.constant.member;

import com.ssy.lingxi.common.language.LanguageHolder;

import java.util.Arrays;

/**
 * 业务平台 - 适用会员类型枚举
 * 参考 MemberLevelTypeEnum
 * @author yzc
 * @version 2.0.0
 * @date 2021/6/28
 */
public enum AbilitySuitableMemberEnum {

    /**
     * 新用户(不包含会员) - 1
     * 上级为平台的会员,无任何角色,当天审核通过
     */
    NEW_USER(1, "新用户(不包含会员)"),

    /**
     * 老用户(不包含会员) - 2
     * 上级为平台的会员,无任何角色,非当天审核通过
     */
    OLD_USER(2, "老用户(不包含会员)"),

    /**
     * 新会员(仅会员用户) - 3
     * 上级会员不是平台后台,角色为商户/渠道,当天审核通过
     */
    NEW_MEMBER(3, "新会员(仅会员用户)"),

    /**
     * 老会员(仅会员用户) - 4
     * 上级会员不是平台后台,角色为商户/渠道, 非当天审核通过
     */
    OLD_MEMBER(4, "老会员(仅会员用户)");

    private final Integer code;

    AbilitySuitableMemberEnum(Integer code, String message) {
        this.code = code;
    }

    public static String getCodeMessage(Integer code) {
        return LanguageHolder.getName(AbilitySuitableMemberEnum.class, code);
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return LanguageHolder.getName(this.getClass(), this.getCode());
    }

    public static AbilitySuitableMemberEnum toEnum(Integer value) {
        return Arrays.stream(AbilitySuitableMemberEnum.values()).filter(e -> e.getCode().equals(value)).findFirst().orElse(NEW_USER);
    }
}